package com.doit.day06

object _02_面相对象之伴生类和伴生对象 {
  def main(args: Array[String]): Unit = {
    val tom: Cat =  Cat("tom", 18)
    val tom1: Cat = Cat("tom", 18)
    println(tom.equals(tom1))//false

    //虽然他们两个互为相伴相生的两个类，但是只能够访问自己里面的东西，不能访问对方的

  }

}

//什么叫伴生类和伴生对象呢？？
//定义两个类，一个是class类，一个是object类  ==》 这两个类的类名要一样
//class类是object类的伴生类，object类是class类的伴生对象
//有什么作用呢？？？？
// 1.可以动静分离
// 2.他们直接可以互相访问对方的私有属性
// 3.可以重写apply方法和unapply方法   apply 可以让我们创建对象的时候不用new   unapply方法呢  可以很好的运用于模式匹配
class Cat(val name:String,val age:Int){

  def eat()={
    println("猫吃鱼，狗吃肉，奥特曼打小怪兽")
  }

  override def equals(obj: Any): Boolean = true
}

object Cat{
  val color:String = "白色"

  def catchMouse()={
    println("我是杰瑞，你来抓我呀")
  }

  def apply(name: String, age: Int): Cat = new Cat(name, age)

  override def equals(obj: Any): Boolean = true

  def unapply(arg: Cat): Some[(Int, String)] = Some(arg.age, arg.name)

}
